From 558ab59c87a1b817cde5720fbf3e3eec33ea7a09 Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 18 Jan 2007 05:57:44 +0000 Subject: [PATCH] Gunar Megger adds support for Alan Map 500 and Holux GM101. --- Makefile.in | 2 +- alan.c | 940 ++++++++++++++ reference/alantrl.gpx | 2447 +++++++++++++++++++++++++++++++++++++ reference/alantrl.trl | Bin 0 -> 266240 bytes reference/alanwpr.gpx | 316 +++++ reference/alanwpr.wpr | Bin 0 -> 65536 bytes testo | 18 + vecs.c | 14 + xmldoc/formats/alan.xml | 5 + xmldoc/formats/garmin.xml | 4 +- 10 files changed, 3743 insertions(+), 3 deletions(-) create mode 100644 alan.c create mode 100644 reference/alantrl.gpx create mode 100644 reference/alantrl.trl create mode 100644 reference/alanwpr.gpx create mode 100644 reference/alanwpr.wpr create mode 100644 xmldoc/formats/alan.xml diff --git a/Makefile.in b/Makefile.in index 3aa583c27..7ae5b5146 100644 --- a/Makefile.in +++ b/Makefile.in @@ -54,7 +54,7 @@ FMTS=magproto.o gpx.o geo.o mapsend.o mapsource.o garmin_tables.o \ tef_xml.o maggeo.o pathaway.o vitosmt.o gdb.o bcr.o coto.o \ ignrando.o stmwpp.o msroute.o cst.o nmn4.o mag_pdb.o compegps.o \ yahoo.o unicsv.o wfff_xml.o garmin_txt.o axim_gpb.o gpssim.o \ - wbt-200.o stmsdf.o gtrnctr.o dmtlog.o raymarine.o + wbt-200.o stmsdf.o gtrnctr.o dmtlog.o raymarine.o alan.o FILTERS=position.o radius.o duplicate.o arcdist.o polygon.o smplrout.o \ reverse_route.o sort.o stackfilter.o trackfilter.o discard.o \ diff --git a/alan.c b/alan.c new file mode 100644 index 000000000..a93c66175 --- /dev/null +++ b/alan.c @@ -0,0 +1,940 @@ +/* + + Read/write Alan Map500 Waypoints, Routes and Tracklogs. + + Provides "alanwpr" and "alantrl" formats for gpsbabel. + Currently supports OS 2.xx only. + + Copyright (C) 2007 Gunar Megger, 0xff@quantentunnel.de + Copyright (C) 2005 Robert Lipe, robertlipe@usa.net + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA + + */ + +#include +#include +#include +#include +#include "defs.h" + + +#define MYNAME "alan" + +#define MAXWPT 1000 /* old 500 */ + +#define MAXRTE 50 /* old 20 */ +#define MAXWPTINRTE 150 /* old 30 */ + +#define MAXTRK 8 /* old 5 */ +#define MAXPTINTRK 2500 + +#define WPT_NAME_LEN 8 +#define WPT_COMMENT_LEN 12 + +#define RTE_NAME_LEN 8 +#define RTE_COMMENT_LEN 12 + +#define TRK_NAME_LEN 12 +#define TRK_COMMENT_LEN 13 + +struct wpthdr { + uint32_t id; + int16_t num; + int16_t next; + int16_t idx[MAXWPT]; + uint8_t used[MAXWPT]; +}; + +struct wpt { + char name[WPT_NAME_LEN]; + char comment[WPT_COMMENT_LEN]; + struct { + int32_t x; /* degree * 36000 */ + int32_t y; /* degree * 36000 */ + } pt; + int32_t date; + int32_t time; + int16_t usecount; + int8_t checked; + int8_t reserved; +}; + +struct rtehdr { + uint32_t id; + int16_t num; + int16_t next; + int16_t idx[MAXRTE]; + uint8_t used[MAXRTE]; + int16_t rteno; +}; + +struct rte { + char name[RTE_NAME_LEN]; + char comment[RTE_COMMENT_LEN]; + int16_t wptnum; + int16_t wptidx[MAXWPTINRTE]; + int16_t reserved; + int32_t date; + int32_t time; +}; + +struct wprdata { + struct wpthdr wpthdr; + struct wpt wpt[MAXWPT]; + struct rtehdr rtehdr; + struct rte rte[MAXRTE]; +}; + +struct trkhdr { + int16_t totalpt; + int16_t next; + char name[TRK_NAME_LEN]; /* 10, null terminated */ + char comment[TRK_COMMENT_LEN]; /* 12, null terminated */ + uint8_t reserved[3]; + uint32_t occupied; + uint32_t show; + uint32_t fill; +}; + +struct loghdr { + uint32_t id; + int16_t num; + int16_t next; + int32_t date; + int32_t time; + struct trkhdr trkhdr[MAXTRK]; +}; + +struct trklog { + struct { + int32_t x; /* degree * 36000 */ + int32_t y; /* degree * 36000 */ + } pt[MAXPTINTRK]; + struct { + int16_t speed; /* km/h * 200 */ + int16_t height; /* m * 5 */ + } sh[MAXPTINTRK]; +}; + +struct trldata { + struct loghdr loghdr; + struct trklog trklog[MAXTRK]; +}; + +#define WPT_HDR_ID 0x5C38A600 +#define RTE_HDR_ID 0xD87F5900 +#define TRL_HDR_ID 0x38CB1200 + +#define WPT_IDX_NONE -1 /* 0xffff */ +#define WPT_USED 0xff +#define WPT_UNUSED 0 +#define WPT_CHECKED 1 +#define WPT_UNCHECKED 0 + +#define RTE_IDX_NONE -1 /* 0xffff */ +#define RTE_USED 0xff +#define RTE_UNUSED 0 +#define RTE_RTENO_NONE -1 + +#define TRK_USED 1 +#define TRK_UNUSED 0 +#define TRK_SHOW 1 +#define TRK_HIDE 0 +#define TRK_FILL 1 +#define TRK_WRAP 0 + +#define MAP500_PT_SCALE 36000.0 +#define pt2deg(P) ((double)(P) / MAP500_PT_SCALE) +#define deg2pt(D) (int32_t)si_round((double)(D) * MAP500_PT_SCALE) + +#define MAP500_ALTITUDE_SCALE 5.0 +#define hgt2m(A) ((double)(A) / MAP500_ALTITUDE_SCALE) +#define m2hgt(A) (int16_t)si_round((double)(A) * MAP500_ALTITUDE_SCALE) + +#define MAP500_SPEED_SCALE 720.0 +#define sp2mps(S) ((double)(S) / MAP500_SPEED_SCALE) +#define mps2sp(S) (int16_t)si_round((double)(S) * MAP500_SPEED_SCALE) + +#define BYTEORDER_TEST 0x04030201 /* 32bit reference value */ +enum { + SWAP_NONE = 0x1234, /* map500 regular */ + SWAP_BYTES = 0x2143, /* bytes swapped */ + SWAP_WORDS = 0x3412, /* words swapped */ + SWAP_BOTH = 0x4321 /* words + bytes swapped */ +}; + +/**************************************************************************/ + +static gbfile *fin = NULL, *fout = NULL; +struct wprdata WPR; +struct trldata TRL; + +static arglist_t wpr_args[] = { + /* + {"os3", &osversion, "Operating system version 3", + NULL, ARGTYPE_BOOL, ARGNOMINMAX }, + */ + ARG_TERMINATOR +}; +static arglist_t trl_args[] = { + /* + {"os3", &osversion, "Operating system version 3", + NULL, ARGTYPE_BOOL, ARGNOMINMAX }, + */ + ARG_TERMINATOR +}; + +/**************************************************************************/ + +static unsigned int byte_order(void) { + unsigned long test = BYTEORDER_TEST; + unsigned char *ptr; + unsigned int order; + + ptr = (unsigned char *)(&test); + order = (ptr[0] << 12) | (ptr[1] << 8) | (ptr[2] << 4) | ptr[3]; + + return order; +} + +static void sw_bytes(void *word) { + uint8_t *p = word; + uint16_t *r = word; + + *r = (uint16_t)(p[0] << 8 | p[1]); +} +static void sw_words(void *dword) { + uint16_t *p = dword; + uint32_t *r = dword; + + *r = (uint32_t)(p[0] << 16 | p[1]); +} +static void rev_bytes(void *dword) { + uint8_t *p = dword; + uint32_t *r = dword; + + *r = (uint32_t)(p[0] << 24 | p[1] << 16 | p[2] << 8 | p[0]); +} + +static void swap_wpthdr(struct wpthdr *wpthdr, + void (*swap16)(void *), void (*swap32)(void *)) { + int i; + + if ( swap32 != NULL ) { + swap32( &wpthdr->id ); + } + if ( swap16 != NULL ) { + swap16( &wpthdr->num ); + swap16( &wpthdr->next ); + for (i=0; iidx[i] ); + } +} + +static void swap_wpt(struct wpt *wpt, + void (*swap16)(void *), void (*swap32)(void *)) { + if ( swap16 != NULL ) { + swap16( &wpt->usecount ); + } + if ( swap32 != NULL ) { + swap32( &wpt->pt.x ); + swap32( &wpt->pt.y ); + swap32( &wpt->date ); + swap32( &wpt->time ); + } +} + +static void swap_rtehdr(struct rtehdr *rtehdr, + void (*swap16)(void *), void (*swap32)(void *)) { + int i; + + if ( swap16 != NULL) { + swap16( &rtehdr->num ); + swap16( &rtehdr->next ); + for (i=0; iidx[i] ); + swap16( &rtehdr->rteno ); + } + if ( swap32 != NULL ) { + swap32( &rtehdr->id ); + } +} + +static void swap_rte(struct rte *rte, + void (*swap16)(void *), void (*swap32)(void *)) { + int i; + + if (swap16 != NULL) { + swap16( &rte->wptnum ); + for (i=0; iwptidx[i] ); + swap16( &rte->reserved ); + } + if ( swap32 != NULL ) { + swap32( &rte->date ); + swap32( &rte->time ); + } +} + +static void wpr_swap(struct wprdata *wprdata) { + void (*swap16)(void *); + void (*swap32)(void *); + int i; + + switch( byte_order() ) { + case SWAP_NONE: /* same byte oder, LITTLE_ENDIAN */ + return; + break; + case SWAP_BOTH: /* swap words and bytes, BIG_ENDIAN */ + swap16 = sw_bytes; + swap32 = rev_bytes; + break; + case SWAP_WORDS: /* swap words, PDP_ENDIAN */ + swap16 = NULL; + swap32 = sw_words; + break; + case SWAP_BYTES: /* swap bytes */ + swap16 = sw_bytes; + swap32 = NULL; + break; + default: + return; /* never reached */ + } + + swap_wpthdr( &(wprdata->wpthdr), swap16, swap32 ); + for (i=0; i< MAXWPT; i++) + swap_wpt( &(wprdata->wpt[i]), swap16, swap32 ); + swap_rtehdr( &(wprdata->rtehdr), swap16, swap32 ); + for (i=0; irte[i]), swap16, swap32 ); +} + +static void swap_trkhdr(struct trkhdr *trkhdr, + void (*swap16)(void *), void (*swap32)(void *)) { + if ( swap16 != NULL ) { + swap16( &(trkhdr->totalpt) ); + swap16( &(trkhdr->next) ); + } + if ( swap32 != NULL ) { + swap32( &(trkhdr->occupied) ); + swap32( &(trkhdr->show) ); + swap32( &(trkhdr->fill) ); + } +} + +static void swap_loghdr(struct loghdr *loghdr, + void (*swap16)(void *), void (*swap32)(void *)) { + int i; + + if ( swap16 != NULL ) { + swap16( &(loghdr->num) ); + swap16( &(loghdr->next) ); + } + if ( swap32 != NULL ) { + swap32( &(loghdr->id) ); + swap32( &(loghdr->date) ); + swap32( &(loghdr->time) ); + } + for (i=0; i>MAXTRK; i++) + swap_trkhdr( &(loghdr->trkhdr[i]), swap16, swap32 ); +} + +static void swap_trklog(struct trklog *trklog, + void (*swap16)(void *), void (*swap32)(void *)) { + int i; + + if ( swap16 != NULL ) { + for (i=0; ish[i].speed) ); + swap16( &(trklog->sh[i].height) ); + } + } + if ( swap32 != NULL ) { + for (i=0; ipt[i].x) ); + swap32( &(trklog->pt[i].y) ); + } + } +} + +static void trl_swap(struct trldata *trldata) { + void (*swap16)(void *); + void (*swap32)(void *); + int i; + + switch( byte_order() ) { + case SWAP_NONE: /* same byte oder, LITTLE_ENDIAN */ + return; + break; + case SWAP_BOTH: /* swap words and bytes, BIG_ENDIAN */ + swap16 = sw_bytes; + swap32 = rev_bytes; + break; + case SWAP_WORDS: /* swap words, PDP_ENDIAN */ + swap16 = NULL; + swap32 = sw_words; + break; + case SWAP_BYTES: /* swap bytes */ + swap16 = sw_bytes; + swap32 = NULL; + break; + default: + return; /* never reached */ + } + + swap_loghdr( &(trldata->loghdr), swap16, swap32); + for (i=0; itrklog[i]), swap16, swap32); +} + + +/**************************************************************************/ + +static void str2lab(char *dest, char *src, size_t len, char *fmt, int n) { + int i,j; + + j = 0; + if (src != NULL) { + for (i=0; itm_mday | ((tm->tm_mon+1)<<8) | ((tm->tm_year+1900)<<16); + *time = t % 86400; +} + +static time_t unpack_time(int32_t date, int32_t time) { + time_t result; + short year, month, day; + static int m_to_d[12] = + {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; + + year = (date >> 16) & 0xffff; + month = (date >> 8) & 0xff; /* 1-12 */ + day = date & 0xff; /* 1-31 */ + + month -= 1; /* fit struct tm */ + year += month / 12; + + if (month < 0) { + year -= 1; + month += 12; + } + result = (year - 1970) * 365 + m_to_d[month]; + if (month <= 1) + year -= 1; + result += (year - 1968) / 4; + result -= (year - 1900) / 100; + result += (year - 1600) / 400; + result += day; + result -= 1; + result *= 86400; + result += time; /* map500 time is inseconds of the day */ + + return result; +} + +/**************************************************************************/ + +static waypoint * get_wpt(struct wprdata *wprdata, unsigned n) { + struct wpthdr *wpthdr; + struct wpt *wpt; + int j, idx; + waypoint *WP; + + wpthdr = &(wprdata->wpthdr); + idx = wpthdr->idx[n]; + + if (idx == WPT_IDX_NONE || wpthdr->used[idx] == WPT_UNUSED) + return NULL; + wpt = &(wprdata->wpt[idx]); + + WP = waypt_new(); + WP->latitude = -pt2deg(wpt->pt.y); + WP->longitude = pt2deg(wpt->pt.x); + WP->creation_time = unpack_time(wpt->date, wpt->time); + for(j=WPT_NAME_LEN-1; j >= 0 && wpt->name[j] == ' '; j--) {}; + WP->shortname = xstrndup(wpt->name,j+1); + for(j=WPT_COMMENT_LEN-1; j >= 0 && wpt->comment[j] == ' '; j--) {}; + if (j >= 0) + WP->description = xstrndup(wpt->comment, j+1); + else + WP->description = xstrdup(""); + WP->notes = xstrdup(""); + + return WP; +} + +static void wpr_read(void) { + struct wprdata wprdata; + struct rtehdr *rtehdr; + struct rte *rte; + int i, j, idx; + waypoint *WP; + route_head *RT; + + if ( gbfread(&wprdata, sizeof(struct wprdata), 1, fin) != 1 ) + fatal(MYNAME ": Read error on %s\n", fin->name); + wpr_swap(&wprdata); + if ( wprdata.wpthdr.id != WPT_HDR_ID || + wprdata.rtehdr.id != RTE_HDR_ID ) + fatal(MYNAME ": %s is not in Alan .wpr format.\n", fin->name); + + /* waypoints */ + for (i=0; iidx[i]; + if (idx == RTE_IDX_NONE || rtehdr->used[idx] == RTE_UNUSED) + continue; + rte = &(wprdata.rte[idx]); + + RT = route_head_alloc(); + RT->rte_num = i; + for(j=RTE_NAME_LEN-1; j >= 0 && rte->name[j] == ' '; j--) {}; + RT->rte_name = xstrndup(rte->name,j+1); + for(j=RTE_COMMENT_LEN-1; j >= 0 && rte->comment[j] == ' '; j--) {}; + if (j >= 0) + RT->rte_desc = xstrndup(rte->comment,j+1); + else + RT->rte_desc = xstrdup(""); + RT->rte_waypt_ct = rte->wptnum; + route_add_head(RT); + + /* route points */ + for(j=0; jwptnum; j++) { + WP = get_wpt(&wprdata, rte->wptidx[j]); + if ( WP != NULL ) + route_add_wpt(RT, WP); + } + } +} + +static void trl_read(void) { + struct trldata trldata; + struct trkhdr *trkhdr; + struct trklog *trklog; + waypoint *WP; + route_head *TL; + int i, j; + + for (i=0; iname); + } + gbfseek(fin, 0x10000 * MAXTRK/2, SEEK_SET); + if ( gbfread( &(trldata.loghdr), sizeof(struct loghdr), 1, fin) != 1) + fatal(MYNAME ": Read error on %s\n", fin->name); + trl_swap(&trldata); + if ( trldata.loghdr.id != TRL_HDR_ID ) + fatal(MYNAME ": %s is not in Alan .trl format.\n", fin->name); + + for(i=0; ioccupied == TRK_UNUSED) + continue; + TL = route_head_alloc(); + for(j=TRK_NAME_LEN-1; + j >= 0 && (trkhdr->name[j] == ' ' || trkhdr->name[j] == '\0'); + j--) {}; + TL->rte_name = xstrndup(trkhdr->name,j+1); + for(j=TRK_COMMENT_LEN-1; + j >= 0 && (trkhdr->comment[j] == ' ' || trkhdr->comment[j] == '\0'); + j--) {}; + TL->rte_desc = xstrndup(trkhdr->comment,j+1); + TL->rte_num = i; + TL->rte_waypt_ct = trkhdr->totalpt; + track_add_head(TL); + + /* track points */ + trklog = &(trldata.trklog[i]); + for(j=0; jtotalpt; j++) { + WP = waypt_new(); + WP->latitude = -pt2deg(trklog->pt[j].y); + WP->longitude = pt2deg(trklog->pt[j].x); + WP->altitude = hgt2m(trklog->sh[j].height); + if ( trklog->sh[j].speed >= 0 ) + WP->speed = sp2mps(trklog->sh[j].speed); + else /* bad speed < 0 - set to 0.0 */ + WP->speed = unknown_speed; + track_add_wpt(TL, WP); + } + } +} + +/**************************************************************************/ + +static int find_wpt(struct wprdata *wprdata, const waypoint *WP) { + struct wpt pattern, *wpt; + int i, wpt_idx; + + str2lab(pattern.name, WP->shortname, WPT_NAME_LEN, NULL, 0); + pattern.pt.x = deg2pt(WP->longitude); + pattern.pt.y = deg2pt(-WP->latitude); + + wpt = wprdata->wpt; + for (i=0; iwpthdr.idx[i]; + if ( wpt_idx == WPT_IDX_NONE || + wprdata->wpthdr.used[wpt_idx] == WPT_UNUSED ) + continue; + if ( strncmp( wpt[wpt_idx].name, pattern.name, WPT_NAME_LEN) == 0 && + wpt[wpt_idx].pt.x == pattern.pt.x && + wpt[wpt_idx].pt.y == pattern.pt.y ) + return i; + } + + return -1; +} + +static int add_wpt(struct wprdata *wprdata, const waypoint *WP,int isroute) { + struct wpthdr *wpthdr; + int hdr_idx, wpt_idx; + struct wpt *wpt; + int i; + + wpthdr = &(wprdata->wpthdr); + + hdr_idx = find_wpt(wprdata, WP); + if ( hdr_idx >= 0 ) { + /* duplicate waypoint */ + if (isroute) { + wpt = &(wprdata->wpt[wpthdr->idx[hdr_idx]]); + wpt->usecount ++; + } + /* + warning(MYNAME ": using duplicate waypoint '%s' at (%f°, %f°)\n", + WP->shortname, WP->latitude, WP->longitude); + */ + return hdr_idx; + } + + for (i=0; iidx[i] != WPT_IDX_NONE; i++) { } + hdr_idx = i; + for (i=0; iused[i] != WPT_UNUSED; i++) { } + wpt_idx = i; + if (wpthdr->num >= MAXWPT || hdr_idx >= MAXWPT || wpt_idx >= MAXWPT ) + fatal(MYNAME ": Can't store more than %u waypoints\n", MAXWPT); + + wpt = &(wprdata->wpt[wpt_idx]); + str2lab(wpt->name, WP->shortname, WPT_NAME_LEN, "W%05d", wpt_idx); + str2lab(wpt->comment, WP->description, WPT_COMMENT_LEN, NULL, 0); + wpt->pt.x = deg2pt(WP->longitude); + wpt->pt.y = deg2pt(-WP->latitude); + wpt->usecount = isroute ? 1 : 0; + wpt->checked = isroute ? 0 : 1; + wpt->reserved = 0; + pack_time(WP->creation_time, &(wpt->date), &(wpt->time)); + + wpthdr->idx[hdr_idx] = wpt_idx; + wpthdr->used[wpt_idx] = WPT_USED; + wpthdr->num++; + wpthdr->next++; + if (wpthdr->next >= MAXWPT) /* overrun */ + wpthdr->next = 0; + + return hdr_idx; +} + +static void wpr_waypoint(const waypoint *WP) { + add_wpt(&WPR, WP, 0); +} + +static void wpr_route_hdr(const route_head *RT) { + struct rtehdr *rtehdr; + int hdr_idx, rte_idx; + struct rte *rte; + int i; + + rtehdr = &(WPR.rtehdr); + for (i=0; iidx[i] != RTE_IDX_NONE; i++) { } + hdr_idx = i; + for (i=0; iused[i] != RTE_UNUSED; i++) { } + rte_idx = i; + if (rtehdr->num >= MAXRTE || hdr_idx >= MAXRTE || rte_idx >= MAXRTE ) + fatal(MYNAME ": Can't store more than %u routes", MAXRTE); + + rte = &(WPR.rte[rte_idx]); + str2lab(rte->name, RT->rte_name, RTE_NAME_LEN, "R%03d", rte_idx); + str2lab(rte->comment, RT->rte_desc, RTE_COMMENT_LEN, NULL, 0); + pack_time(time(NULL), &(rte->date), &(rte->time)); + + rtehdr->idx[hdr_idx] = rte_idx; + rtehdr->used[rte_idx] = RTE_USED; + rtehdr->num++; + rtehdr->next++; + if (rtehdr->next >= MAXRTE) /* overrun */ + rtehdr->next = 0; + + /* if you want the new route to be active, uncomment the next line */ + /* rtehdr->rteno = rte_idx; */ +} + +static void wpr_route_wpt(const waypoint *WP) { + struct rte *rte; + int wpt_idx; + + rte = &(WPR.rte[WPR.rtehdr.num -1]); + if ( rte->wptnum >= MAXWPTINRTE ) + fatal(MYNAME ": Can't store more than %u waypoints per route", MAXWPTINRTE); + + wpt_idx = add_wpt(&WPR, WP, 1); + + rte->wptidx[rte->wptnum] = wpt_idx; + rte->wptnum ++; +} + +static void wpr_route_trl(const route_head *RT) { + /* should we do some final sanity checks? */ +} + +static void wpr_write(void) { + int i; + + WPR.wpthdr.id = WPT_HDR_ID; + WPR.wpthdr.num = WPR.wpthdr.next = 0; + for (i=0; iname); +} + +/**************************************************************************/ + +static void trl_track_hdr(const route_head *TL) { + struct trkhdr *trkhdr; + int idx, l; + + trkhdr = TRL.loghdr.trkhdr; + + for (idx=0; idx< MAXTRK && trkhdr[idx].occupied != TRK_UNUSED; idx++) {}; + if (idx >= MAXTRK) + fatal(MYNAME ": Can't store more than %u tracklogs", MAXTRK); + + if ( TL->rte_name != NULL ) + strncpy(trkhdr[idx].name, TL->rte_name, TRK_NAME_LEN); + if ( *(trkhdr[idx].name) == '\0' ) + sprintf(trkhdr[idx].name, "T%03d", idx); + trkhdr[idx].name[TRK_NAME_LEN-1] = '\0'; + + if ( TL->rte_desc != NULL ) { + strncpy(trkhdr[idx].comment, TL->rte_desc, TRK_COMMENT_LEN); + l = strlen(TL->rte_desc); + if ( l < TRK_COMMENT_LEN-1 ) + memset(trkhdr[idx].comment + l, ' ', TRK_COMMENT_LEN - l); + } + trkhdr[idx].comment[TRK_COMMENT_LEN-1] = '\0'; + + trkhdr[idx].comment[TRK_COMMENT_LEN-1] = '\0'; + trkhdr[idx].occupied = TRK_USED; + trkhdr[idx].totalpt = 0; + trkhdr[idx].next = 0; + + TRL.loghdr.num = idx; +} + +static void trl_track_wpt(const waypoint *WP) { + struct trklog *trklog; + struct trkhdr *trkhdr; + int trk_idx, log_idx; + + trk_idx = TRL.loghdr.num; + + trkhdr = &(TRL.loghdr.trkhdr[trk_idx]); + if ( trkhdr->totalpt >= MAXPTINTRK ) + fatal(MYNAME ": Can't store more than %u points per track", MAXPTINTRK); + log_idx = trkhdr->next; + + trklog = &(TRL.trklog[trk_idx]); + trklog->pt[log_idx].x = deg2pt( WP->longitude); + trklog->pt[log_idx].y = deg2pt(-WP->latitude); + if ( WP->speed != unknown_speed ) + trklog->sh[log_idx].speed = mps2sp(WP->speed); + if ( WP->altitude != unknown_alt ) + trklog->sh[log_idx].height = m2hgt(WP->altitude); + + trkhdr->totalpt ++; + trkhdr->next = trkhdr->totalpt; +} + +static void trl_track_tlr(const route_head *TL) { + struct trkhdr *trkhdr; + int trk_idx; + + trk_idx = TRL.loghdr.num; + trkhdr = &(TRL.loghdr.trkhdr[trk_idx]); + + if ( trkhdr->totalpt == 0 ) + trkhdr->occupied = TRK_UNUSED; + + TRL.loghdr.num = -1; +} + +static void trl_write(void) { + struct trkhdr *trkhdr; + void *buf; + int i; + size_t fill; + + TRL.loghdr.id = TRL_HDR_ID; + TRL.loghdr.num = TRL.loghdr.next = -1; + TRL.loghdr.date = TRL.loghdr.time = 0; + for (i=0; itotalpt = 0; + trkhdr->next = 0; + memset(trkhdr->name, 0, TRK_NAME_LEN); + memset(trkhdr->comment, ' ', TRK_COMMENT_LEN); + trkhdr->comment[TRK_COMMENT_LEN-1] = '\0'; + trkhdr->occupied = TRK_UNUSED; + trkhdr->show = TRK_HIDE; + trkhdr->fill = TRK_FILL; + } + memset(TRL.trklog, 0xff, sizeof(struct trklog) * MAXTRK); + + track_disp_all(trl_track_hdr, trl_track_tlr, trl_track_wpt); + + trl_swap(&TRL); + + fill = 0x10000 - 2 * sizeof(struct trklog); + buf = xmalloc(fill); + if (buf == NULL) + fatal(MYNAME ": Not enough memory\n"); + memset(buf, 0xff, fill); + + for (i=0; iname); + } + xfree(buf); + + fill = 0x1000 - sizeof(struct loghdr); + buf = xmalloc(fill); + if (buf == NULL) + fatal(MYNAME ": Not enough memory\n"); + memset(buf, 0xff, fill); + + if ( gbfwrite(&(TRL.loghdr), sizeof(struct loghdr), 1, fout) != 1 || + gbfwrite(buf, fill, 1, fout) != 1 ) + fatal(MYNAME ": Write error on %s\n", fout->name); + xfree(buf); +} + +/**************************************************************************/ + +static void alan_rd_init(const char *fname) { + fin = gbfopen(fname, "r", MYNAME); +} + +static void alan_rd_deinit(void) { + gbfclose(fin); + fin = NULL; +} + + +static void alan_wr_init(const char *fname) { + fout = gbfopen(fname, "w", MYNAME); +} + +static void alan_wr_deinit(void) { + gbfclose(fout); + fout = NULL; +} + + +static void alan_exit(void) { + return; +} + +/**************************************************************************/ + +ff_vecs_t alanwpr_vecs = { + ff_type_file, + { + ff_cap_read | ff_cap_write /* waypoints */, + ff_cap_none /* tracks */, + ff_cap_read | ff_cap_write /* routes */ + }, + alan_rd_init, + alan_wr_init, + alan_rd_deinit, + alan_wr_deinit, + wpr_read, + wpr_write, + alan_exit, + wpr_args, + CET_CHARSET_ASCII, 0 /* ascii is the expected character set */ + /* not fixed, can be changed through command + line parameter */ +}; + +ff_vecs_t alantrl_vecs = { + ff_type_file, + { + ff_cap_none /* waypoints */, + ff_cap_read | ff_cap_write /* tracks */, + ff_cap_none /* routes */ + }, + alan_rd_init, + alan_wr_init, + alan_rd_deinit, + alan_wr_deinit, + trl_read, + trl_write, + alan_exit, + trl_args, + CET_CHARSET_ASCII, 0 /* ascii is the expected character set */ + /* not fixed, can be changed through command + line parameter */ +}; diff --git a/reference/alantrl.gpx b/reference/alantrl.gpx new file mode 100644 index 000000000..22d337e37 --- /dev/null +++ b/reference/alantrl.gpx @@ -0,0 +1,2447 @@ + + + + + FH-DRIVE + + + -4542.400000 + + + 654.800000 + 0.000000 + + + 656.000000 + 0.527778 + + + 657.000000 + 0.000000 + + + 658.400000 + 0.000000 + + + 658.800000 + 0.000000 + + + 661.200000 + 0.000000 + + + 659.600000 + 0.000000 + + + 660.200000 + 0.000000 + + + 656.600000 + 0.000000 + + + 657.800000 + 0.000000 + + + 656.600000 + 0.000000 + + + 655.200000 + 0.000000 + + + 658.200000 + 0.000000 + + + 657.800000 + 0.000000 + + + 656.600000 + 0.000000 + + + 659.800000 + 0.000000 + + + 658.600000 + 0.000000 + + + 660.600000 + 0.000000 + + + 661.200000 + 0.000000 + + + 660.200000 + 0.000000 + + + 657.400000 + 0.000000 + + + 656.000000 + 0.000000 + + + 657.200000 + 0.000000 + + + 656.400000 + 0.000000 + + + 656.400000 + 0.000000 + + + 658.400000 + 0.000000 + + + 657.600000 + 0.000000 + + + 661.600000 + 0.000000 + + + 659.200000 + 0.000000 + + + 654.800000 + 2.000000 + + + 650.200000 + 2.388889 + + + 645.800000 + 1.888889 + + + 642.600000 + 2.861111 + + + 645.000000 + 3.194444 + + + 647.400000 + 4.083333 + + + 647.800000 + 3.805556 + + + 646.600000 + 2.833333 + + + 642.200000 + 3.055556 + + + 637.800000 + 2.722222 + + + 631.000000 + 2.944444 + + + 625.000000 + 2.666667 + + + 621.800000 + 3.333333 + + + 618.200000 + 0.000000 + + + 615.600000 + 0.888889 + + + + + 30-12-05 + PIRATENBUCH +1 + + + -4542.400000 + + + 653.000000 + 1.111111 + + + 651.000000 + 1.250000 + + + 654.200000 + 1.138889 + + + 650.200000 + 0.000000 + + + 648.200000 + 0.000000 + + + 651.200000 + 0.000000 + + + 649.800000 + 0.861111 + + + 644.400000 + 1.500000 + + + 645.000000 + 1.388889 + + + 647.000000 + 0.972222 + + + 645.600000 + 0.805556 + + + 643.400000 + 1.138889 + + + 639.800000 + 0.861111 + + + 639.600000 + 1.055556 + + + 640.400000 + 0.666667 + + + 647.200000 + 0.000000 + + + 649.400000 + 0.722222 + + + 648.800000 + 1.722222 + + + 646.200000 + 0.722222 + + + 642.800000 + 0.555556 + + + 639.000000 + 0.000000 + + + 635.400000 + 0.777778 + + + 631.400000 + 0.972222 + + + 625.400000 + 1.111111 + + + 623.600000 + 1.055556 + + + 624.600000 + 0.000000 + + + 624.400000 + 0.000000 + + + 625.600000 + 0.000000 + + + 625.200000 + 0.000000 + + + 623.800000 + 0.694444 + + + 626.000000 + 1.027778 + + + 625.800000 + 1.333333 + + + 629.000000 + 1.250000 + + + 628.200000 + 1.194444 + + + 626.000000 + 0.000000 + + + 625.800000 + 0.777778 + + + 624.800000 + 1.250000 + + + 622.600000 + 0.555556 + + + 621.400000 + 0.694444 + + + 623.200000 + 0.666667 + + + 623.000000 + 0.916667 + + + 621.200000 + 1.194444 + + + 619.400000 + 0.944444 + + + 621.000000 + 0.694444 + + + 621.000000 + 0.000000 + + + 622.200000 + 1.583333 + + + 622.200000 + 1.583333 + + + 625.400000 + 0.722222 + + + 618.400000 + 0.638889 + + + 617.200000 + 0.777778 + + + 615.200000 + 0.888889 + + + 616.200000 + 1.111111 + + + 616.000000 + 0.777778 + + + 613.600000 + 0.000000 + + + 609.200000 + 0.944444 + + + 607.600000 + 1.277778 + + + 604.800000 + 0.805556 + + + 606.400000 + 1.000000 + + + 609.600000 + 0.833333 + + + 614.200000 + 0.750000 + + + 618.800000 + 1.000000 + + + 619.400000 + 1.055556 + + + 621.800000 + 1.138889 + + + 623.800000 + 0.000000 + + + 625.800000 + 0.000000 + + + 629.600000 + 1.194444 + + + 628.600000 + 0.555556 + + + 624.200000 + 0.916667 + + + 625.600000 + 0.000000 + + + 623.800000 + 0.583333 + + + 607.400000 + 0.000000 + + + 597.800000 + 0.000000 + + + 613.200000 + 0.000000 + + + 621.400000 + 0.777778 + + + 618.600000 + 0.861111 + + + 618.200000 + 0.805556 + + + 615.800000 + 0.638889 + + + 615.600000 + 0.833333 + + + 614.800000 + 0.000000 + + + 623.000000 + 1.111111 + + + 630.000000 + 0.000000 + + + 626.600000 + 0.000000 + + + 624.400000 + 0.000000 + + + 627.400000 + 0.000000 + + + 627.000000 + 1.027778 + + + 625.200000 + 1.083333 + + + 624.400000 + 0.972222 + + + 624.600000 + 0.000000 + + + 623.400000 + 0.000000 + + + 621.800000 + 0.000000 + + + 618.200000 + 0.000000 + + + 614.800000 + 0.000000 + + + 618.000000 + 0.000000 + + + 621.200000 + 1.250000 + + + 624.000000 + 1.305556 + + + 623.800000 + 0.000000 + + + 626.600000 + 1.305556 + + + 627.600000 + 1.333333 + + + 626.200000 + 0.916667 + + + 626.000000 + 1.388889 + + + 628.800000 + 1.277778 + + + 629.200000 + 1.222222 + + + 629.200000 + 1.055556 + + + 628.200000 + 1.055556 + + + 627.400000 + 1.194444 + + + 626.600000 + 0.750000 + + + 626.800000 + 1.361111 + + + 626.600000 + 1.194444 + + + 628.000000 + 1.361111 + + + 629.600000 + 1.305556 + + + 629.600000 + 1.333333 + + + 629.400000 + 1.333333 + + + 627.600000 + 1.333333 + + + 627.200000 + 1.361111 + + + 626.400000 + 1.333333 + + + 625.600000 + 1.361111 + + + 625.200000 + 1.111111 + + + 621.600000 + 0.000000 + + + 613.200000 + 0.000000 + + + 618.200000 + 0.000000 + + + 623.000000 + 0.000000 + + + 619.600000 + 0.000000 + + + 606.200000 + 1.444444 + + + 596.000000 + 1.277778 + + + 595.400000 + 1.111111 + + + 596.000000 + 0.000000 + + + 591.200000 + 1.388889 + + + 572.800000 + 0.000000 + + + 555.200000 + 0.611111 + + + 550.800000 + 0.861111 + + + 542.800000 + 0.805556 + + + 545.000000 + 0.777778 + + + 532.200000 + 0.694444 + + + 521.400000 + 0.000000 + + + 513.600000 + 1.055556 + + + 504.800000 + 1.166667 + + + 503.400000 + 1.555556 + + + 501.000000 + 1.388889 + + + 501.000000 + 1.388889 + + + 495.400000 + 1.500000 + + + 487.000000 + 1.611111 + + + 481.800000 + 1.472222 + + + 475.200000 + 1.500000 + + + 475.200000 + 1.222222 + + + 467.800000 + 1.194444 + + + 458.400000 + 1.305556 + + + 457.000000 + 1.305556 + + + 448.600000 + 1.333333 + + + 442.800000 + 1.333333 + + + 433.400000 + 1.111111 + + + 429.400000 + 0.000000 + + + 424.800000 + 1.138889 + + + 411.600000 + 1.055556 + + + 404.000000 + 1.166667 + + + 395.800000 + 1.416667 + + + 390.400000 + 1.388889 + + + 386.400000 + 1.361111 + + + 385.400000 + 1.305556 + + + 391.400000 + 1.388889 + + + 377.800000 + 1.527778 + + + 370.600000 + 1.333333 + + + 371.000000 + 1.333333 + + + 363.800000 + 1.361111 + + + 356.200000 + 1.444444 + + + 349.000000 + 1.388889 + + + 344.800000 + 1.305556 + + + 341.800000 + 0.777778 + + + 336.000000 + 0.916667 + + + 320.600000 + 1.250000 + + + 310.800000 + 1.083333 + + + 299.200000 + 1.055556 + + + 290.400000 + 1.166667 + + + 284.800000 + 0.000000 + + + 283.600000 + 0.000000 + + + 283.400000 + 0.000000 + + + 281.200000 + 0.000000 + + + 276.400000 + 0.000000 + + + 277.800000 + 0.000000 + + + 292.000000 + 0.000000 + + + 278.600000 + 1.416667 + + + 270.800000 + 0.000000 + + + 252.200000 + 0.805556 + + + 246.000000 + 0.000000 + + + 223.400000 + 0.916667 + + + 209.200000 + 0.555556 + + + 177.000000 + 0.000000 + + + 193.800000 + 0.638889 + + + 181.400000 + 0.000000 + + + 175.000000 + 0.000000 + + + 179.400000 + 0.000000 + + + 168.000000 + 0.000000 + + + 155.400000 + 0.000000 + + + 124.800000 + 0.694444 + + + 126.400000 + 0.000000 + + + 123.800000 + 0.000000 + + + 125.200000 + 0.000000 + + + 90.800000 + 1.000000 + + + 101.600000 + 0.000000 + + + 109.600000 + 1.055556 + + + 73.800000 + 0.000000 + + + 66.200000 + 0.000000 + + + 56.200000 + 0.000000 + + + 44.800000 + 0.888889 + + + 44.200000 + 0.000000 + + + 22.800000 + 1.638889 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 24.400000 + 0.000000 + + + 117.800000 + 0.000000 + + + 54.000000 + 0.000000 + + + 41.000000 + 0.916667 + + + 45.800000 + 0.000000 + + + 40.800000 + 0.000000 + + + 45.600000 + 0.000000 + + + 43.400000 + 0.916667 + + + 49.800000 + 0.000000 + + + 69.800000 + 0.750000 + + + 101.800000 + 0.694444 + + + 115.200000 + 0.694444 + + + 125.600000 + 0.000000 + + + 148.800000 + 0.555556 + + + 164.800000 + 0.722222 + + + 177.000000 + 0.888889 + + + 173.200000 + 0.000000 + + + 166.200000 + 1.166667 + + + 144.400000 + 1.361111 + + + 130.000000 + 1.222222 + + + 131.600000 + 1.194444 + + + 112.600000 + 1.111111 + + + 101.200000 + 0.638889 + + + 90.200000 + 0.805556 + + + 72.600000 + 0.805556 + + + 59.400000 + 1.138889 + + + 41.000000 + 0.000000 + + + 14.800000 + 0.000000 + + + 8.800000 + 2.305556 + + + + + 1-1-06 + TORRE TIME +2 + + + -4542.400000 + + + 653.400000 + 0.000000 + + + 657.600000 + 0.000000 + + + 654.400000 + 0.000000 + + + 653.600000 + 0.000000 + + + 647.400000 + 1.111111 + + + 646.400000 + 1.361111 + + + 643.400000 + 1.388889 + + + 636.800000 + 0.833333 + + + 621.800000 + 1.361111 + + + 619.800000 + 1.444444 + + + 618.800000 + 0.638889 + + + 618.600000 + 1.055556 + + + 615.200000 + 1.333333 + + + 615.000000 + 0.722222 + + + 624.000000 + 0.611111 + + + 623.400000 + 0.861111 + + + 640.000000 + 1.194444 + + + 644.400000 + 0.944444 + + + 652.000000 + 0.833333 + + + 656.800000 + 0.000000 + + + 655.400000 + 0.805556 + + + 665.200000 + 0.888889 + + + 677.800000 + 1.138889 + + + 684.400000 + 1.333333 + + + 692.200000 + 1.166667 + + + 696.200000 + 1.416667 + + + 701.600000 + 1.194444 + + + 712.400000 + 1.027778 + + + 717.400000 + 1.361111 + + + 718.400000 + 1.444444 + + + 725.800000 + 0.694444 + + + 752.000000 + 0.527778 + + + 745.200000 + 0.000000 + + + 735.000000 + 1.388889 + + + 727.600000 + 1.222222 + + + 726.400000 + 1.444444 + + + 710.600000 + 0.500000 + + + 727.400000 + 1.111111 + + + 738.800000 + 0.000000 + + + 735.600000 + 0.000000 + + + 738.800000 + 1.027778 + + + 748.200000 + 1.305556 + + + 754.800000 + 1.388889 + + + 767.000000 + 0.972222 + + + 774.000000 + 1.194444 + + + 780.600000 + 0.694444 + + + 802.400000 + 0.000000 + + + 802.400000 + 0.000000 + + + 814.200000 + 1.055556 + + + 817.400000 + 1.000000 + + + 826.600000 + 0.833333 + + + 835.000000 + 1.277778 + + + 841.400000 + 1.305556 + + + 846.200000 + 2.250000 + + + 855.600000 + 1.416667 + + + 857.600000 + 1.055556 + + + 862.800000 + 1.222222 + + + 871.000000 + 1.166667 + + + 883.800000 + 0.916667 + + + 890.400000 + 0.722222 + + + 902.800000 + 0.944444 + + + 906.600000 + 1.333333 + + + 918.600000 + 1.000000 + + + 928.200000 + 0.916667 + + + 942.800000 + 1.000000 + + + 947.800000 + 0.972222 + + + 955.200000 + 0.916667 + + + 970.800000 + 0.916667 + + + 981.800000 + 0.861111 + + + 988.800000 + 0.944444 + + + 1001.400000 + 1.527778 + + + 1009.600000 + 1.083333 + + + 1013.200000 + 1.944444 + + + 1017.200000 + 0.638889 + + + 1010.600000 + 1.027778 + + + 1006.000000 + 1.472222 + + + 1006.000000 + 1.333333 + + + 1009.200000 + 1.166667 + + + 1002.400000 + 1.305556 + + + 996.200000 + 0.583333 + + + 992.000000 + 1.416667 + + + 978.400000 + 1.333333 + + + 974.800000 + 1.666667 + + + 974.800000 + 0.944444 + + + 974.400000 + 1.277778 + + + 971.000000 + 1.527778 + + + 969.400000 + 1.250000 + + + 966.200000 + 0.000000 + + + 971.400000 + 0.000000 + + + 967.600000 + 0.000000 + + + 964.800000 + 0.666667 + + + 952.800000 + 1.222222 + + + 1045.400000 + 0.000000 + + + 952.800000 + 0.000000 + + + 829.000000 + 0.000000 + + + 892.200000 + 0.000000 + + + 1031.000000 + 0.000000 + + + 938.400000 + 0.000000 + + + 868.800000 + 0.000000 + + + 955.000000 + 0.000000 + + + 1050.800000 + 0.000000 + + + 948.800000 + 0.000000 + + + 1025.600000 + 0.000000 + + + 957.200000 + 0.000000 + + + 952.800000 + 0.000000 + + + 942.000000 + 0.000000 + + + 943.800000 + 1.083333 + + + 938.800000 + 1.472222 + + + 939.200000 + 0.000000 + + + 945.000000 + 1.805556 + + + 950.000000 + 0.777778 + + + 961.200000 + 1.333333 + + + 968.800000 + 1.250000 + + + 971.200000 + 1.500000 + + + 967.400000 + 0.972222 + + + 966.600000 + 1.250000 + + + 961.400000 + 0.722222 + + + 968.800000 + 0.750000 + + + 968.000000 + 0.638889 + + + 967.600000 + 0.000000 + + + 967.600000 + 0.000000 + + + 937.800000 + 0.000000 + + + 1009.200000 + 1.500000 + + + 1010.000000 + 0.888889 + + + 1009.800000 + 0.000000 + + + 996.800000 + 1.388889 + + + 1000.600000 + 1.444444 + + + 1013.000000 + 1.555556 + + + 1013.400000 + 1.388889 + + + 1018.200000 + 0.555556 + + + 1017.600000 + 0.000000 + + + 1029.000000 + 0.888889 + + + 1028.600000 + 0.638889 + + + 1028.600000 + 1.722222 + + + 1034.400000 + 1.250000 + + + 1034.400000 + 1.583333 + + + 1034.200000 + 1.500000 + + + 1037.000000 + 1.583333 + + + 1032.000000 + 1.527778 + + + 1024.800000 + 1.472222 + + + 1025.000000 + 1.416667 + + + 1022.600000 + 1.000000 + + + 1023.000000 + 1.222222 + + + 1039.800000 + 0.833333 + + + 1056.600000 + 0.805556 + + + 1061.800000 + 0.000000 + + + 1065.200000 + 0.000000 + + + 1056.200000 + 0.000000 + + + 1060.600000 + 0.000000 + + + 1057.800000 + 0.000000 + + + 1058.600000 + 0.000000 + + + 1047.800000 + 0.666667 + + + 1045.200000 + 0.527778 + + + 1049.600000 + 0.000000 + + + 1030.600000 + 1.416667 + + + 1027.600000 + 1.638889 + + + 1033.800000 + 1.250000 + + + 1035.600000 + 1.277778 + + + 1030.400000 + 1.361111 + + + 1029.600000 + 0.861111 + + + 1029.400000 + 1.111111 + + + 1029.600000 + 1.222222 + + + 1030.200000 + 1.361111 + + + 1024.200000 + 1.416667 + + + 1016.600000 + 1.138889 + + + 1016.600000 + 1.555556 + + + 1016.200000 + 0.000000 + + + 1020.800000 + 0.805556 + + + 1019.400000 + 1.000000 + + + 1019.400000 + 1.416667 + + + 1018.600000 + 0.000000 + + + 1018.600000 + 0.000000 + + + 1018.600000 + 0.000000 + + + 1000.200000 + 1.527778 + + + 1004.000000 + 1.305556 + + + 1005.600000 + 1.166667 + + + 1004.800000 + 0.805556 + + + 987.400000 + 1.111111 + + + 977.200000 + 0.000000 + + + 977.600000 + 1.138889 + + + 962.400000 + 1.361111 + + + 962.600000 + 1.416667 + + + 962.600000 + 1.333333 + + + 966.800000 + 1.555556 + + + 968.600000 + 1.166667 + + + 962.200000 + 1.000000 + + + 954.400000 + 0.666667 + + + 941.200000 + 0.944444 + + + 946.000000 + 1.055556 + + + 933.800000 + 1.194444 + + + 933.600000 + 1.194444 + + + 937.600000 + 1.638889 + + + 930.800000 + 1.361111 + + + 933.200000 + 0.000000 + + + 937.000000 + 0.000000 + + + 943.400000 + 0.000000 + + + 928.800000 + 0.611111 + + + 944.800000 + 0.000000 + + + 959.000000 + 0.000000 + + + 957.000000 + 0.638889 + + + 963.800000 + 0.000000 + + + 967.800000 + 1.472222 + + + 961.400000 + 1.416667 + + + 960.800000 + 1.527778 + + + 964.000000 + 1.472222 + + + 964.800000 + 0.944444 + + + 967.800000 + 1.166667 + + + 975.400000 + 1.277778 + + + 971.000000 + 1.361111 + + + 961.800000 + 1.500000 + + + 958.400000 + 1.666667 + + + 952.800000 + 1.000000 + + + 945.400000 + 1.083333 + + + 940.800000 + 1.250000 + + + 938.800000 + 1.555556 + + + 911.000000 + 1.166667 + + + 918.800000 + 1.361111 + + + 920.400000 + 1.388889 + + + 914.800000 + 1.388889 + + + 911.200000 + 1.333333 + + + 900.200000 + 1.500000 + + + 896.000000 + 1.472222 + + + 891.600000 + 1.388889 + + + 884.400000 + 0.000000 + + + 882.200000 + 1.388889 + + + 883.000000 + 1.472222 + + + 879.600000 + 1.388889 + + + 880.000000 + 1.388889 + + + 883.600000 + 0.000000 + + + 885.200000 + 1.416667 + + + 870.200000 + 1.250000 + + + 860.400000 + 1.472222 + + + 863.200000 + 1.277778 + + + 856.400000 + 1.305556 + + + 843.400000 + 1.555556 + + + 839.000000 + 1.527778 + + + 833.200000 + 1.083333 + + + 828.600000 + 1.416667 + + + 828.600000 + 1.611111 + + + 827.400000 + 1.194444 + + + 820.600000 + 1.361111 + + + 806.600000 + 1.500000 + + + 810.800000 + 1.333333 + + + 806.200000 + 1.055556 + + + 805.000000 + 1.500000 + + + 802.200000 + 1.138889 + + + 797.200000 + 1.416667 + + + 793.600000 + 1.416667 + + + 785.800000 + 1.361111 + + + 777.400000 + 1.305556 + + + 778.000000 + 1.305556 + + + 776.200000 + 1.361111 + + + 780.200000 + 1.666667 + + + 785.400000 + 1.111111 + + + 782.200000 + 1.472222 + + + 773.600000 + 1.444444 + + + 772.000000 + 1.500000 + + + 777.800000 + 1.472222 + + + 759.600000 + 1.444444 + + + 753.600000 + 1.388889 + + + 754.800000 + 1.444444 + + + 742.600000 + 1.555556 + + + 735.800000 + 1.277778 + + + 727.000000 + 1.277778 + + + 722.600000 + 1.333333 + + + 719.400000 + 1.194444 + + + 710.400000 + 1.500000 + + + 688.800000 + 1.166667 + + + 677.400000 + 1.166667 + + + 671.600000 + 0.861111 + + + 664.200000 + 1.027778 + + + 655.200000 + 1.138889 + + + 648.600000 + 1.055556 + + + 622.600000 + 0.000000 + + + 615.600000 + 1.055556 + + + 620.000000 + 0.000000 + + + 618.000000 + 1.555556 + + + 620.800000 + 1.277778 + + + 624.400000 + 1.083333 + + + 626.200000 + 0.972222 + + + 634.400000 + 1.000000 + + + + + 2-1-06 + TAZACORTE +3 + + + -4542.400000 + + + 518.600000 + 0.000000 + + + 525.800000 + 0.000000 + + + 530.400000 + 0.000000 + + + 530.800000 + 1.111111 + + + 507.000000 + 1.361111 + + + 509.200000 + 1.361111 + + + 507.800000 + 2.638889 + + + 495.200000 + 1.083333 + + + 492.200000 + 1.333333 + + + 486.200000 + 1.194444 + + + 478.800000 + 1.638889 + + + 464.400000 + 0.944444 + + + 454.200000 + 1.027778 + + + 457.800000 + 0.000000 + + + 432.400000 + 0.777778 + + + 415.000000 + 0.000000 + + + 406.000000 + 1.250000 + + + 392.600000 + 1.083333 + + + 390.200000 + 1.416667 + + + 377.000000 + 1.277778 + + + 368.800000 + 1.138889 + + + 351.400000 + 1.416667 + + + 341.000000 + 1.222222 + + + 331.400000 + 1.083333 + + + 328.000000 + 1.500000 + + + 327.800000 + 0.000000 + + + + diff --git a/reference/alantrl.trl b/reference/alantrl.trl new file mode 100644 index 0000000000000000000000000000000000000000..c0f94ab2c6b1d4797f4dc7bf9e56a7cc50936eaf GIT binary patch literal 266240 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 G2L1v7=x*Hr literal 0 HcmV?d00001 diff --git a/reference/alanwpr.gpx b/reference/alanwpr.gpx new file mode 100644 index 000000000..5649e5443 --- /dev/null +++ b/reference/alanwpr.gpx @@ -0,0 +1,316 @@ + + + + + Home + Sweet_Home + Sweet_Home + + + Airport + Santa_Cruz + Santa_Cruz + + + GAS001 + Barlovento + Barlovento + + + GAS002 + Puntagorda + Puntagorda + + + Police + Puntagorda + Puntagorda + + + SMrkt01 + Santa_Cruz + Santa_Cruz + + + SMrkt02 + El_Paso + El_Paso + + + PARK01 + SmallParking + SmallParking + + + PARK02 + Tilos_Trail + Tilos_Trail + + + PARK03 + Las_Tricia + Las_Tricia + + + Barloven + Barlovento + Barlovento + + + Bejenado + Bejenado + Bejenado + + + Cumbreci + Cumbrecita + Cumbrecita + + + Durazner + Duraznero + Duraznero + + + El_Pilar + El_Pilar + El_Pilar + + + El_Rodeo + El_Rodeo + El_Rodeo + + + FaroFuen + Fuencaliente + Fuencaliente + + + F.Olen + Fuente_Olen + Fuente_Olen + + + HoyoNegr + Hoyo_Negro + Hoyo_Negro + + + Muchacho + Rq.Muchachos + Rq.Muchachos + + + M.Birigo + M_Birigoyo + M_Birigoyo + + + S.Isidro + San_Isidro + San_Isidro + + + S.Maria + Santa_Maria + Santa_Maria + + + Tazacort + Tazacorte + Tazacorte + + + T.d.Time + Tor_del_Time + Tor_del_Time + + + Zarza + La_Zarza + La_Zarza + + + Zarzita + La_Zarzita + La_Zarzita + + + SRVCENTR + Servicecentr + Servicecentr + + + TGR130 + Trailhead + Trailhead + + + TGR131 + Trailhead + Trailhead + + + TPRLP14 + Trailhead + Trailhead + + + TPRLP15 + Trailhead + Trailhead + + + TPRLP16 + Trailhead + Trailhead + + + TSLEP103 + Trailhead + Trailhead + + + TSLEP107 + Trailhead + Trailhead + + + TSLEP107 + Trailhead + Trailhead + + + TSLFU110 + Trailhead + Trailhead + + + TSLFU111 + Trailhead + Trailhead + + + TSLSAS30 + Trailhead + Trailhead + + + TSLTJ71 + Trailhead + Trailhead + + + TSLTJ71a + Trailhead + Trailhead + + + GC7CF + Geocache + Geocache + + + GCN1TQ + Geocache + Geocache + + + GCNXY8 + Geocache + Geocache + + + GCHT8C + Geocache + Geocache + + + GCNQXK + Geocache + Geocache + + + GCD098 + Geocache + Geocache + + + GCM6N0 + Geocache + Geocache + + + GC405B + Geocache + Geocache + + + GCD096 + Geocache + Geocache + + + GCNXKV + Geocache + Geocache + + + GCNXMD + Geocache + Geocache + + + GCHND9 + Geocache + Geocache + + + GC405C + Geocache + Geocache + + + FH-HAUS + + + FH-DRIVE + + + GCHND9-1 + + + GCHND9-2 + + + GCHND9-3 + + + PL VETA + PLAYA VETA + PLAYA VETA + + + GCHND9 + + GCHND9 + Geocache + Geocache + + + GCHND9-1 + + + GCHND9-2 + + + GCHND9-3 + + + diff --git a/reference/alanwpr.wpr b/reference/alanwpr.wpr new file mode 100644 index 0000000000000000000000000000000000000000..ecada54705d2a6fa77d550e8e87c4cb2c5e5be37 GIT binary patch literal 65536 zcmeI)TWl0n9LMp01*}356fY=32dE%Qm)+jW#oBJ$E%w6FU1~w&I&3FpW!u4N3sMq| zF^GvKnn1uyLZUICCcYRFA54g7OnmY|0x>=rO|8y&gYynGf&8=hNm~nW)UfoTV#&Rm3eZjl*(;#yUdpbQYH)K4p}6N;GU&vr(QlsP>bsPi^n&z z#r2MCnJrgkwB<8Nb3_NH?NFub{m~N4C7XLY{duH@%zQp+I(u`&gO}F1-on@{Ih{v3 zm$yeUX~)dvjlXohu?@52stu#d^i#QPPUq{cbiJ>l!Q7PF)YbQ^(0cpUhjP|)*04EX zw_LsY^H>~ly%nMP#>a+sJ61L~bsg1yC!((R)aGEl)-lH%AGVySt1ol7+Vz%o2Xnq# zE^j(hSHIsgnk(&?k?XYwEL(GvS3fszgX^6Ljj!Ew?DjEh*#DC?^Eury)^}B|ci@>| zz4pkqyfthXes0vtO#X1C&h@^p59T`TgLaQK==j%+f1?w5N5^-lE12sZ%kD9=d+grl zBU85{f3A1Ep_))G(vov>gLZeOa6PE?TD0D|(0o&ots}Vs$JYIqDcl*x30=1Z?ZJAf zNVng_U}ab0@df0?OU>qPV~mAqk2C4ld;D#2XqW)bbWt&a+aK)x8mI2Yh3Tc&^*$~-mYY< zCXhR-^(I2jgrgHcuaCFu+9xbKtLJX=opV;_@mgp- z67il`dV4UpNXPfVj$pr<>)+WB%+1mLcP8YQhG73FiA>HT-YnE&.*<\/time>' ${TMPDIR}/alanwpr-new.gpx > ${TMPDIR}/alanwpr-sed.gpx +compare ${TMPDIR}/alanwpr-sed.gpx ${REFERENCE}/alanwpr.gpx + +# +# Alan Map500 tracklogs< test +# +rm -f ${TMPDIR}/alantrl* +${PNAME} -i alantrl -f ${REFERENCE}/alantrl.trl -o alantrl -F ${TMPDIR}/alantrl-new.trl +${PNAME} -i alantrl -f ${TMPDIR}/alantrl-new.trl -o gpx -F ${TMPDIR}/alantrl-new.gpx +grep -v '